Expand description
§Crate features
§Ecosystem features
-
std - When enabled,
borsh
uses the standard library. Disabling this feature will result in building the crate inno_std
environment.To carter such builds, Borsh offers
io
module which includes a items which are used inBorshSerialize
andBorshDeserialize
traits. Most notablyio::Read
,io::Write
andio::Result
.When std feature is enabled, those items are re-exports of corresponding
std::io
items. Otherwise they are borsh-specific types which mimic behaviour of corresponding standard types.
§Default features
- std - enabled by default.
§Other features
-
derive - Gates derive macros of BorshSerialize and BorshDeserialize traits.
-
unstable__schema - Gates BorshSchema trait and its derive macro. Gates schema module. This feature requires derive to be enabled too.
-
rc - Gates implementation of BorshSerialize and BorshDeserialize for
Rc<T>
/Arc<T>
respectively. Inno_std
settingRc
/Arc
are pulled fromalloc
crate. Serializing and deserializing these types does not preserve identity and may result in multiple copies of the same data. Be sure that this is what you want before enabling this feature. -
hashbrown - Pulls in HashMap/HashSet when no
std
is available. This feature is set to be mutually exclusive with std feature. -
bytes - Gates implementation of BorshSerialize and BorshDeserialize for Bytes and BytesMut.
-
bson - Gates implementation of BorshSerialize and BorshDeserialize for ObjectId.
-
ascii - Gates implementation of BorshSerialize, BorshDeserialize, BorshSchema for types from ascii crate.
-
de_strict_order - Enables check that keys, parsed during deserialization of HashMap/HashSet and BTreeSet/BTreeMap are encountered in ascending order with respect to PartialOrd for hash collections, and Ord for btree ones. Deserialization emits error otherwise.
If this feature is not enabled, it is possible that two different byte slices could deserialize into the same
HashMap
/HashSet
object.
§Config aliases
- hash_collections -
This is a feature alias, set up in
build.rs
to be equivalent to (std OR hashbrown). Gates implementation of BorshSerialize, BorshDeserialize and BorshSchema for HashMap/HashSet.
Re-exports§
pub use de::BorshDeserialize;
pub use de::from_reader;
pub use de::from_slice;
pub use schema::BorshSchema;
pub use ser::BorshSerialize;
Modules§
- Subset of
std::io
which is used as part of borsh public API. - Module is available if borsh is built with
features = ["unstable__schema"]
.
Functions§
- Returns the largest possible size of a serialised object based solely on its type
T
. - Serializes an object without allocation to compute and return its length
- generate BorshSchemaContainer for type
T
- Serialize an object into a vector of bytes.
- Serializes an object directly into a
Writer
. - Deserialize this instance from a slice of bytes, but assume that at the beginning we have bytes describing the schema of the type. We deserialize this schema and verify that it is correct.
- Serialize object into a vector of bytes and prefix with the schema serialized as vector of bytes in Borsh format.
Derive Macros§
- Derive macro available if borsh is built with
features = ["derive"]
. - Derive macro available if borsh is built with
features = ["unstable__schema"]
. - Derive macro available if borsh is built with
features = ["derive"]
.